
# 异常
try:
 print(num)
except NameError:
 print('有错误')

 # 捕获多个指定异常
 try:
  print(1 / 0)
 except (NameError, ZeroDivisionError):
  print('有错误')

  # 捕获异常
  try:
   print(num)
  except (NameError, ZeroDivisionError) as result:
   print(result)

   # Exception是所有程序异常类的⽗类
   try:
    print(num)
   except Exception as result:
    print(result)

# 异常的else
try:
 print(1)
except Exception as result:
 print(result)
else:
 print('我是else，是没有异常的时候执⾏的代码')

# 异常的finally
try:
 f = open('test.txt', 'r')
except Exception as result:
 f = open('test.txt', 'w')
else:
 print('没有异常，真开⼼')
finally:
 f.close()

 # 导入模块  import

#  from..import.

# from .. import *

# as定义别名

# __all__

# self指的是调⽤该函数的对象。
# _init__() ⽅法的作⽤：初始化对象。
# __str__ ⽅法
# 烤地瓜
# 需求主线：
# 1. 被烤的时间和对应的地⽠状态：
# 0-3分钟：⽣的
# 3-5分钟：半⽣不熟
# 5-8分钟：熟的
# 超过8分钟：烤糊了
# 2. 添加的调料：
# ⽤户可以按⾃⼰的意愿添加调料
# 定义地瓜属性
class Sweetpotato():
 def __init__(self):
  # # 被烤的时间
  self.cook_time=0
  # # 地⽠的状态
  self.cook_start='生的'
  #调料列表
  self.condiments=[]
 # 定义烤地⽠⽅法
 def cook(self,time):
  self.cook_time+=time
  if.0<=self.cook_time <3:
   self.cook_start='⽣的'
  elif 3<= self.cook_time <5:
   self.cook_start='半⽣不熟'
  elif 5<=self.cook_time <8:
   self.cook_start='熟了'
  elif self.cook_time >=8:
   self.cook_start='烤糊了'

  #  添加作料
 def add_condiments(self, condiment):
   """添加作料"""
   self.condiments.append(condiment)

#   魔法方法
 def __str__(self):
  return f'这个地⽠烤了{self.cook_time}分钟, 状态是{self.cook_start}'



digua1=Sweetpotato()
print(digua1)

digua1.cook(2)
digua1.add_condiments('孜然')
print(digua1)

digua1.cook(4)
digua1.add_condiments('番茄酱')
print(digua1)

# 搬家具  房⼦ 和 家具，故被案例涉及两个类：房⼦类 和 家具类。
# 家具类
class Furniture():
 def __init__(self,name,area):
  # 家具名字
  self.name=name
  # 家具占地⾯积
  self.area =area

# 房子类
class Home():
 def __init__(self,address,area):
  # 地理位置
  self.address=address
  # 房屋⾯积
  self.area=area
  # 剩余⾯积
  self.free_area=area
  # 家具列表
  self.furniture=[]

 # 魔法方法
 def __str__(self):
   return f'房⼦坐落于{self.address}, 占地⾯积{self.area}, 剩余⾯积{self.free_area}, 家具有{self.furniture}'

 def add_furniture(self,item):
  """容纳家具"""
  if self.free_area >=item.area:
   self.furniture.append(item.name)
   # 家具搬⼊后，房屋剩余⾯积 = 之前剩余⾯积 - 该家具⾯积
   self.free_area-=item.area
  else:
   print('家具太⼤，剩余⾯积不⾜，⽆法容纳')


bed =Furniture('双⼈床',6)
jia1=Home('北京',1200)
print(jia1)

jia1.add_furniture(bed)
print(jia1)

sofa = Furniture('沙发', 10)
jia1.add_furniture(sofa)
print(jia1)
ball = Furniture('篮球场', 1500)
jia1.add_furniture(ball)
print(jia1)

